package su.myspringapps.onlineschool.repository;

import java.util.List;

/**
 * Интерфейс SimpleCrudRepository
 * <p/>
 * Указывает простые CRUD-операции
 * <p/>
 *
 * @author petr.mikhailin
 * created 19.05.2024 11:57
 */
public interface SimpleCrudRepository<T, ID> {

    /**
     * Создать новую запись в БД
     *
     * @param entity новая запись
     * @return ID сохраненной записи
     */
    Integer create(T entity) throws Exception;

    /**
     * Изменить запись в БД
     *
     * @param entity измененная запись в БД
     */
    void update(T entity) throws Exception;

    /**
     * Удалить запись в бД
     *
     * @param entity запись в БД на удаление
     */
    void delete(T entity) throws Exception;

    /**
     * Найти запись в БД по ID
     *
     * @param id ID для поиска записи в БД
     * @return искомая запись
     */
    T findById(ID id) throws Exception;

    /**
     * Найти все записи в БД
     *
     * @return список найденных записей
     */
    List<T> findAll() throws Exception;

}
